home *** CD-ROM | disk | FTP | other *** search
/ The Original Shareware 1.1 / The Original Shareware (WeMake CDs)(Volume 1.1)(CDs, Inc)(1993).iso / 16 / scrn2dsk.zip / SCRN2DSK.ASM < prev    next >
Assembly Source File  |  1980-01-01  |  4KB  |  200 lines

  1. ;   SCREEN-SAVE
  2. ;   (C) COPYRIGHT 1986 ANDREW FRIED
  3. ;   COMPUTER SHOPPER JUNE86 P108
  4.  
  5. ;   NAME CHANGED TO SCRN2DSK TO AVOID CONFUSION W/ SCREEN BLANK UTILITIES
  6.  
  7. CSEG SEGMENT PARA 'CODE'
  8. HANDLER PROC FAR
  9.          ASSUME CS:CSEG
  10.          ORG 100H
  11.  
  12. START:
  13.          JMP BOOTSTRAP
  14.  
  15.  
  16. ;   notice was abbreviated to save memory (this is a resident program)
  17.  
  18. COPYRIGHT          DB 9,'  **** SCREEN-SAVE ****   ',13,10,10
  19.                    DB 9,'See Computer Shopper 6/86 ',13,10,10
  20.                    DB 9,'* Prt Sc saves to disk *  ','$'
  21.  
  22. BUSY               DB 0
  23. SCR_NUM            DW 0
  24. VIDEO_SEG          DW ?
  25. SCR_BUF            DB 2025 DUP (?)  ; USE 2050 IF YOU ADD LF
  26. FILENAME           DB 'SCREEN.'
  27. FILE_EXT           DB '000',0
  28.  
  29. INT_HANDLER:
  30. SAVE_REGS:
  31.          STI
  32.          PUSH AX
  33.          PUSH BX
  34.          PUSH CX
  35.          PUSH DX
  36.          PUSH DS
  37.          PUSH ES
  38.          PUSH SI
  39.          PUSH DI
  40.  
  41.          PUSH CS
  42.          POP DS
  43.          CMP BUSY,0
  44.          JE SET_FLAG
  45.          JMP EXIT
  46.  
  47. SET_FLAG:
  48.          MOV BUSY,1
  49.  
  50. GET_SCRN_SEG:
  51.          INT 11H
  52.          AND AX,48
  53.          CMP AL,48
  54.          JE J1
  55.          MOV VIDEO_SEG, 0B800H
  56.          JMP FILL_BUF
  57. J1:
  58.          MOV VIDEO_SEG,0B000H
  59.  
  60. FILL_BUF:
  61.          XOR DX,DX
  62.          MOV BX,VIDEO_SEG
  63.          MOV DS,BX
  64.          MOV BX,CS
  65.          MOV ES,BX
  66.          XOR BX,BX
  67.          MOV SI,BX
  68.          LEA DI,SCR_BUF
  69.          MOV CX,2000         ; 80 x 25 = 2000
  70.  
  71. NEXT:
  72.          MOV AX,[SI]
  73.          MOV ES:[DI],AL
  74.          INC SI
  75.          INC SI
  76.          INC DI
  77.          INC DX
  78.          CMP DX,80
  79.          JNE CONTINUE
  80.          MOV BYTE PTR ES:[DI],13
  81.          INC DI
  82.  
  83. ;        my editor doesn't require line-feed, you may want it
  84. ;        MOV BYTE PTR ES:[DI],10
  85. ;        INC DI
  86.  
  87.          XOR DX,DX
  88.  
  89. CONTINUE:
  90.          LOOP NEXT
  91.  
  92.  
  93. SAVE_SCR:
  94.          CLI
  95.          MOV AH,3CH
  96.          XOR CX,CX
  97.          MOV BX,CS
  98.          MOV DS,BX
  99.          LEA DX,FILENAME
  100.          INT 21H
  101.          JC EXIT
  102.          MOV BX,AX
  103.          MOV AH,40H
  104.          MOV CX,2025         ; SOURCE USES 2050 WHILE TEXT SAYS 2048
  105.          MOV DX,CS           ; IF YOU ADD CR & LF THE LAST PAIR WILL
  106.          MOV DS,DX           ; BE LOST.  I'M USING 2025 BECAUSE I DON'T
  107.          LEA DX,SCR_BUF      ; USE THE LF.
  108.          INT 21H             ; 2048 OR LESS IS DESIRABLE TO AVOID ALLOCATING
  109.          MOV AH,3EH          ; ANOTHER CLUSTER FOR THE 2 BYTES
  110.          INT 21H
  111.          STI
  112.  
  113. INC_SCR_NUM:
  114.          MOV AX,SCR_NUM
  115.          INC AX
  116.          CMP AX,1000
  117.          JNE J2
  118.          XOR AX,AX
  119.  
  120. J2:
  121.          MOV SCR_NUM,AX
  122.  
  123. UPDATE_NAME:
  124.          CMP AX,0
  125.          JE RESET_FLAG
  126.          LEA DI,FILE_EXT
  127.          MOV CL,100
  128.          IDIV CL
  129.          ADD AL,'0'
  130.          MOV [DI],AL
  131.          INC DI
  132.          XCHG AH,AL
  133.          XOR AH,AH
  134.          MOV CL,10
  135.          IDIV CL
  136.          ADD AL,'0'
  137.          MOV [DI],AL
  138.          INC DI
  139.          ADD AH,'0'
  140.          MOV [DI],AH
  141.  
  142.  
  143. RESET_FLAG:
  144.          MOV BUSY,0
  145.  
  146. EXIT:
  147.          POP DI
  148.          POP SI
  149.          POP ES
  150.          POP DS
  151.          POP DX
  152.          POP CX
  153.          POP BX
  154.          POP AX
  155.          IRET
  156.  
  157. BOOTSTRAP:
  158.          MOV AH,11
  159.          MOV BX,0001H
  160.          INT 10H
  161.  
  162.          MOV AX,600H
  163.          XOR CX,CX
  164.          MOV DH,24
  165.          MOV DL,79
  166.          MOV BH,31
  167.          INT 10H
  168.  
  169.          MOV AH,2
  170.          SUB BH,BH
  171.          SUB DX,DX
  172.          INT 10H
  173.  
  174.          MOV AX,CS
  175.          MOV DS,AX
  176.          LEA DX,COPYRIGHT
  177.          MOV AH,9
  178.          INT 21H
  179.  
  180.          XOR AX,AX
  181.          MOV BUSY,AL
  182.          MOV SCR_NUM,AX
  183.  
  184.          MOV AH,25H
  185.          MOV AL,5
  186.          MOV BX,CS
  187.          MOV DS,BX
  188.          LEA DX,INT_HANDLER
  189.          INT 21H
  190.  
  191.          LEA DX,BOOTSTRAP
  192.          ADD DX,5
  193.          INT 27H
  194.  
  195.  
  196. HANDLER ENDP
  197. CSEG ENDS
  198. END START
  199.  
  200.